Stepper motors which precisely control motion are important components of electronic equipment like computer peripherals and industrial robots. In these devices, a stepper motor is driven by a driver which in turn is controlled by a controller circuit. Controller circuits available today can charge two adjacent windings of a stepper motor to different magnetic levels. This causes the motor's rotor to stop at various positions between the motor's stator magnets. This process, called "microstepping," permits movement of the motor in much smaller increments than the steps between magnets, typically breaking each motor step into as many as 100 microsteps.
The stepper motor controller circuits in the prior art rely on advanced microprocessors and other electronic components to generate control signals for driving the stepper motors at high speeds with accurate control. The technique commonly employed by these circuits, however, requires extensive peripheral circuitry in order to generate the control signals quickly enough for very high speed motor movement. This technique and its limitations are illustrated by a controller circuit manufactured by Compumotor Corporation of Petaluma, Calif., and by the approach discussed in "A Motor-Control System For (linear) Stepper Motors," by Nordquist et al, of Xynetics Products, Santa Clara, Calif.
In this technique, an acceleration bit number is received from the user and stored in a look-up table by the circuit. The acceleration bit number is used to periodically update a velocity bit number. The amount of change in the value of the velocity bit number depends upon the size of the stores acceleration bit number. In addition, in the compumotor device the velocity bit number forms an input to an adder which is connected to an input of an edge triggered latch. The latch has its output connected to an input of the adder. This circuit adds the value in the adder to the velocity number and deposits the total back in the adder. The latch is clocked by the system clock. When the adder overflows, a carry signal is generated which becomes the control signal or drive pulse that is routed to the stepper motor to drive the motor. The Nordquist article discloses another circuit which generates such carry signals. The rate of generation of the drive pulses depends upon the value of the velocity bit number. The higher the velocity bit number, the more frequent the generation of carry signals or drive pulses and the faster the motor covers distance (measured in pulses to the stepper motor).
One major drawback to this approach is the need for peripheral adder circuitry. In these devices, very high speed movement, such as 500,000 drive pulses/sec, requires a 500 kHz clock, because these devices generate only a single carry signal in each clock cycle. The internal circuitry of current microprocessors cannot perform the add and signal feedback at this high rate. Therefore, to accomplish this very high speed control, these prior art circuits use peripheral adders, with the number of such adders depending on the desired velocity resolution. These adders and associated circuitry add significantly to both the cost and size of the overall controller circuit.
Therefore, a need exists for an improved stepper motor control circuit which is directed toward overcoming these and other problems of prior art devices.